≫ Добавление данных из таблиц
Объединение двух существующих простых таблиц может быть более эффективным, чем индексация данных с нуля, и может быть желательным в некоторых случаях (например, при объединении таблиц 'main' и 'delta' вместо простого перестроения 'main' в схеме разбиения 'main+delta'). Таким образом, indexer предоставляет опцию для этого. Объединение таблиц обычно происходит быстрее, чем перестроение, но всё же не мгновенно для огромных таблиц. По сути, необходимо один раз прочитать содержимое обеих таблиц и один раз записать результат. Например, объединение таблиц размером 100 ГБ и 1 ГБ приведёт к 202 ГБ операций ввода-вывода (но это всё равно, вероятно, меньше, чем требуется для индексации с нуля).
Основной синтаксис команды следующий:
sudo -u manticore indexer --merge DSTINDEX SRCINDEX [--rotate] [--drop-src]
Если не указать --drop-src, будет затронута только таблица DSTINDEX: содержимое SRCINDEX будет объединено с ней.
Переключатель --rotate обязателен, если DSTINDEX уже обслуживается searchd.
Типичный сценарий использования — объединение меньшего обновления из SRCINDEX в DSTINDEX. При объединении атрибутов значения из SRCINDEX будут иметь приоритет, если встречаются дублирующиеся идентификаторы документов. Однако обратите внимание, что "старые" ключевые слова не будут автоматически удалены в таких случаях. Например, если в DSTINDEX для документа 123 есть ключевое слово "old", а в SRCINDEX для него же — ключевое слово "new", после объединения документ 123 будет найден по обоим ключевым словам. Чтобы смягчить это, можно задать явное условие для удаления документов из DSTINDEX; соответствующий переключатель — --merge-dst-range:
sudo -u manticore indexer --merge main delta --merge-dst-range deleted 0 0
Этот переключатель позволяет применять фильтры к целевой таблице вместе с объединением. Фильтров может быть несколько; все их условия должны быть выполнены, чтобы включить документ в результирующую объединённую таблицу. В приведённом выше примере фильтр пропускает только те записи, где 'deleted' равен 0, исключая все записи, помеченные как удалённые.
--drop-src позволяет удалить SRCINDEX после объединения и перед ротацией таблиц, что важно, если вы указываете DSTINDEX в killlist_target DSTINDEX. В противном случае при ротации таблиц документы, объединённые в DSTINDEX, могут быть подавлены SRCINDEX.